﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;
using System.IO;

namespace FiyatGor
{
    public partial class frmMain : XtraForm
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            txtBarkod.Focus();
            comboBoxEdit1.SelectedIndex = 0;
        }

        private void UrunBul(string barkod, bool kodagore)
        {
            string sql = "";
            if (kodagore)
            {
                sql = string.Format("exec sp_executesql N'SELECT     STOKLAR.sto_kod, STOKLAR.sto_GtipNo,STOKLAR.sto_isim,(SELECT     TOP 1 Data FROM mye_ImageData WHERE     (TableID = 13) AND (RecID_RECno = STOKLAR.sto_RECno)) as resim FROM STOKLAR WHERE     (STOKLAR.sto_kod = ''{0}'')'", barkod);
            }
            else
            {
                sql = string.Format("exec sp_executesql N'SELECT     STOKLAR.sto_kod, STOKLAR.sto_GtipNo,STOKLAR.sto_isim,(SELECT     TOP 1 Data FROM mye_ImageData WHERE     (TableID = 13) AND (RecID_RECno = STOKLAR.sto_RECno)) as resim FROM STOKLAR INNER JOIN BARKOD_TANIMLARI ON STOKLAR.sto_kod = BARKOD_TANIMLARI.bar_stokkodu WHERE     (BARKOD_TANIMLARI.bar_kodu = ''{0}'')'", barkod);
            }

            SqlDataReader rd = DataLayer.Get.Reader(sql);
            if (rd.HasRows)
            {
                rd.Read();
                string stokkod = rd.GetString(0);
                string grpkod = rd.GetString(1);
                string stokadi = rd.GetString(2);
                if (rd["resim"] != DBNull.Value)
                {
                    byte[] myByteArray = (byte[])rd["resim"];
                    using (MemoryStream ms = new MemoryStream(myByteArray, 0, myByteArray.Length))
                    {
                        ms.Write(myByteArray, 0, myByteArray.Length);
                        pictureBox1.Image = Image.FromStream(ms, true);
                    }
                }

                lblStokAdi.Text = string.Format("{0}  -  {1}", barkod, stokadi);
                txtBarkod.Text = string.Empty;

                string aranan = string.Empty;
                if (string.IsNullOrEmpty(grpkod))
                {
                    aranan = stokkod;
                }
                else
                {
                    aranan = grpkod;
                }

                rd.Close();

                txtBarkod.Text = stokkod;
                txtBarkod.SelectAll();
                txtBarkod.Focus();

                pivotGridControl1.Fields.Clear();
                pivotGridControl1.DataSource = DataLayer.Get.Fill(string.Format("exec sp_executesql N'SELECT     STOKLAR.sto_isim as [Stoklar],DEPOLAR.dep_adi as [Depolar], CAST(dbo.fn_DepodakiMiktar(STOKLAR.sto_kod, DEPOLAR.dep_no, '''') AS DECIMAL(16, 5)) AS [Envanter Toplamı],(SELECT SUM(case when sth_normal_iade =0 then sth_miktar else (-1) * sth_miktar end) FROM STOK_HAREKETLERI WHERE (sth_tip = 1) AND (sth_cins <= 1) AND (sth_evraktip = 4) AND (sth_cikis_depo_no = DEPOLAR.dep_no) AND (sth_stok_kod=''{0}'')) as [Satis Miktarı],(SELECT     san_isim FROM STOK_ANA_GRUPLARI WHERE     (san_kod = STOKLAR.sto_anagrup_kod)) as [Ana Grup Kodu],(SELECT     sta_isim FROM STOK_ALT_GRUPLARI WHERE     (sta_ana_grup_kod = STOKLAR.sto_anagrup_kod) AND (sta_kod = STOKLAR.sto_altgrup_kod)) AS [Alt Grup Kodu] FROM DEPOLAR CROSS JOIN STOKLAR WHERE (STOKLAR.sto_kod = ''{0}'') OR (STOKLAR.sto_GtipNo = ''{0}'')'", aranan));
                pivotGridControl1.Fields.Add("Stoklar", DevExpress.XtraPivotGrid.PivotArea.RowArea);
                pivotGridControl1.Fields.Add("Depolar", DevExpress.XtraPivotGrid.PivotArea.RowArea);
                pivotGridControl1.Fields.Add("Satis Miktarı", DevExpress.XtraPivotGrid.PivotArea.DataArea);
                pivotGridControl1.Fields.Add("Envanter Toplamı", DevExpress.XtraPivotGrid.PivotArea.DataArea);
                pivotGridControl1.Fields.Add("Alt Grup Kodu", DevExpress.XtraPivotGrid.PivotArea.RowArea);
                pivotGridControl1.Fields.Add("Ana Grup Kodu", DevExpress.XtraPivotGrid.PivotArea.RowArea);

                pivotGridControl1.Fields["Envanter Toplamı"].CellFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
                pivotGridControl1.Fields["Envanter Toplamı"].CellFormat.FormatString = "n" + Cevir.Parse<int>(Program.Session[Settings.decimalLenght]);
                pivotGridControl1.Fields["Satis Miktarı"].CellFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
                pivotGridControl1.Fields["Satis Miktarı"].CellFormat.FormatString = "n" + Cevir.Parse<int>(Program.Session[Settings.decimalLenght]);
                pivotGridControl1.Fields["Depolar"].SortOrder = DevExpress.XtraPivotGrid.PivotSortOrder.Ascending;

                pivotGridControl1.BestFit();
            }
            else
            {
                pictureBox1.Image = null;
                lblStokAdi.Text = "Ürün Bulunamadı !";
                pivotGridControl1.Fields.Clear();
            }
        }

        private void txtBarkod_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                UrunBul(txtBarkod.Text, false);
            }
            else if (e.KeyCode == Keys.F10)
            {
                frmListe lst = new frmListe();
                if (comboBoxEdit1.SelectedIndex == 1)
                {
                    lst.ListeTipi = frmListe.ListeTipleri.StokKodundan;
                }
                else
                {
                    lst.ListeTipi = frmListe.ListeTipleri.StokAdindan;
                }
                lst.Filtre = txtBarkod.Text;

                if (lst.ShowDialog() == DialogResult.OK)
                {
                    txtBarkod.Text = lst.StokKod;
                    UrunBul(lst.StokKod, true);
                }
            }
        }

        private void xrPivotGrid1_FieldValueDisplayText(object sender, DevExpress.XtraPivotGrid.PivotFieldDisplayTextEventArgs e)
        {
            //if (e.ValueType == DevExpress.XtraPivotGrid.PivotGridValueType.GrandTotal && e.DisplayText == "Miktar")
            //    e.DisplayText = "Eldeki Toplam";
            //else if (e.ValueType == DevExpress.XtraPivotGrid.PivotGridValueType.GrandTotal && e.DisplayText == "Satis Miktarı")
            //    e.DisplayText = "Satış Toplam";
            //if (e.ValueType == DevExpress.XtraPivotGrid.PivotGridValueType.GrandTotal)
            //    e.DisplayText = "Toplamlar";

        }

        private void frmMain_Activated(object sender, EventArgs e)
        {
            txtBarkod.Focus();
        }


    }
}
